import Vue from 'vue'
import VueRouter from 'vue-router'
import routes from './routes'

//声明使用插件
Vue.use(VueRouter)

//缓存原本的push 方法
const originalPush = VueRouter.prototype.push
const originalReplace = VueRouter.prototype.replace
//指定新的push方法
VueRouter.prototype.push = function(location, onComplete, onAbort){
    //判断如果没有指定回调函数，通过call调用源函数并使用catch来处理错误
    if(onComplete===undefined && onAbort === undefined){
        //
        return originalPush.call(this, location, onComplete, onAbort).catch(()=>{});
    }else{
        originalPush.call(this, location, onComplete, onAbort);
    }
}
//replace同样处理
VueRouter.prototype.replace = function(location, onComplete, onAbort){
    //判断如果没有指定回调函数，通过call调用源函数并使用catch来处理错误
    if(onComplete===undefined && onAbort === undefined){
        //
        return originalReplace.call(this, location, onComplete, onAbort).catch(()=>{});
    }else{
        originalReplace.call(this, location, onComplete, onAbort);
    }
}
//向外暴露路由对象
export default new VueRouter({
    mode: 'history', //没有#的模式
    routes, //注册所有路由
})